package com.egoo.ticket.server.dao;

import com.egoo.ticket.server.pojo.entity.FormTemplate;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;

/**
 * @author Administrator
 */
@Component
public interface FormTemplateDao {
	/**
	 * TODO 创建模板
	 * @param formTemplate
	 * @return
	 */
	Integer create(FormTemplate formTemplate);

	/**
	 * TODO 通过名字查询模板
	 * @param name
	 * @param tenantId
	 * @return
	 */
	FormTemplate selectByEqualsName(@Param("name") String name,
                                    @Param("tenantId") String tenantId);

	/**
	 * TODO 根据id查询模板
	 * @param id
	 * @return
	 */
	FormTemplate selectById(Integer id);

	/**
	 * TODO 根据id获取模板内容
	 * @param id
	 * @return
	 */
	FormTemplate selectContentById(Integer id);

	/**
	 * TODO 获取所有的表单模板
	 * @param tenantId
	 * @return
	 */
	List<FormTemplate> selectAllFormTemplate(@Param("tenantId") String tenantId);

	/**
	 * TODO 分页
	 * @param currentPage
	 * @param pageSize
	 * @param tenantId
	 * @return
	 */
	List<FormTemplate> selectAll(@Param("currentPage") Integer currentPage,
                                 @Param("pageSize") Integer pageSize,
                                 @Param("tenantId") String tenantId);

	/**
	 * TODO 根据名字查询
	 * @param name
	 * @param tenantId
	 * @return
	 */
	List<FormTemplate> selectByName(@Param("name") String name,
                                    @Param("tenantId") String tenantId);

	/**
	 * TODO 查询总数
	 * @param tenantId
	 * @return
	 */
	Integer selectTotal(@Param("tenantId") String tenantId);

	/**
	 * 更新表单模板的content
	 * @param formTemplate
	 * @return
	 */
	Integer updateContent(FormTemplate formTemplate);

	/**
	 * 更新表单模板的使用次数
	 * @param formTemplate
	 * @return
	 */
	Integer updateUseStatus(FormTemplate formTemplate);

	/**
	 * 删除模板
	 * @param formTemplate
	 * @return
	 */
	Integer delete(FormTemplate formTemplate);

	/**
	 * 批量删除
	 * @param formTemplateList
	 * @return
	 */
	Integer deleteBatch(List<FormTemplate> formTemplateList);

	/**
	 * TODO 获取表单模板的id和name
	 * @param tenantId
	 * @return
	 */
	List<FormTemplate> selectAllFormTemplateIdAndName(@Param("tenantId") String tenantId);

	/**
	 * 根据节点id查询模板
	 * @param nodeTypeId
	 * @return
	 */
	FormTemplate selectFormTemplateInfoByNodeTypeId(Integer nodeTypeId);

	/**
	 * TODO
	 * @param hashMap
	 * @return
	 */
    List<FormTemplate> selectByCustomFieldId(HashMap<String, Object> hashMap);

	/**
	 * TODO
	 * @param idList
	 * @return
	 */
	List<FormTemplate> selectByIds(List<Integer> idList);
}
